using System;
using System.ServiceModel;
using Sinacor.Infra.Service.Security.Services;
using System.Collections.Generic;
using Sinacor.Infra.Common;
using System.Text;
using Sinacor.Infra.Service.Common;

namespace Sinacor.Servico.Bovespa.ManutencaoOrdens.ServiceImplementation.Translator.BusinessEntityToDataContract
{
	public class ManutencaoOrdens 
    {
		public ManutencaoOrdens(){}

		public Bovespa.ManutencaoOrdens.Service.DataContract.Response.DetalheOrdemResponse ToDetalheOrdemResponse(BusinessEntity.DetalheOrdem from)
        {
            Bovespa.ManutencaoOrdens.Service.DataContract.Response.DetalheOrdemResponse retorno = new Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Response.DetalheOrdemResponse();

            if (from == null)
                return null;

            retorno.Ativo = from.Ativo;
            retorno.Carteira = from.Carteira;
            retorno.DataOrdem = from.DataOrdem;

            if (from.Mercado.HasValue)
            {
                switch (from.Mercado.Value)
                {
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.Vista:
                        retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.Vista;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.OpcaoCompra:
                        retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.OpcaoCompra;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.OpcaoVenda:
                        retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.OpcaoVenda;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.ExercicioOpcaoCompra:
                        retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.ExercicioOpcaoCompra;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.ExercicioOpcaoVenda:
                        retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.ExercicioOpcaoVenda;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.Fracionario:
                        retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.Fracionario;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.Estruturado:
                        retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.Estruturado;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.Leilao:
                        retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.Leilao;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.Termo:
                        retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.Termo;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.LeilaoNaoCotados:
                        retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.LeilaoNaoCotados;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.Futuro:
                        retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.Futuro;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.VencimentoFuturo:
                        retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.VencimentoFuturo;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.BOX:
                        retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.BOX;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.CotasETF:
                        retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.CotasETF;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.IntegralizacaoResgateCotas:
                        retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.IntegralizacaoResgateCotas;
                        break;
                }
            }

            if (from.NaturezaOperacao.HasValue)
            {
                switch (from.NaturezaOperacao.Value)
                {
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.NaturezaOperacao.Compra:
                        retorno.NaturezaOperacao = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.NaturezaOperacao.Compra;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.NaturezaOperacao.Venda:
                        retorno.NaturezaOperacao = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.NaturezaOperacao.Venda;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.NaturezaOperacao.CompraVenda:
                        retorno.NaturezaOperacao = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.NaturezaOperacao.CompraVenda;
                        break;
                }
            }

            retorno.NumeroOrdem = from.NumeroOrdem;
            retorno.NumeroOrdemSubSequencia = from.NumeroOrdemSubSequencia;
            retorno.PrazoVencimentoTermo = from.PrazoVencimentoTermo;
            retorno.Preco = from.Preco;
            retorno.Quantidade = from.Quantidade;
            retorno.QuantidadeExecutada = from.QuantidadeExecutada;

            return retorno; ;
		}

		public List<Bovespa.ManutencaoOrdens.Service.DataContract.Response.DetalheOrdemResponse> ToDetalheOrdemResponse(List<BusinessEntity.DetalheOrdem> from)
        {
            List<Bovespa.ManutencaoOrdens.Service.DataContract.Response.DetalheOrdemResponse> lista = new List<Bovespa.ManutencaoOrdens.Service.DataContract.Response.DetalheOrdemResponse>();
            Bovespa.ManutencaoOrdens.Service.DataContract.Response.DetalheOrdemResponse item = null;

            if (from == null)
                return null;

            foreach (BusinessEntity.DetalheOrdem inLista in from)
            {
                item = this.ToDetalheOrdemResponse(inLista);
                lista.Add(item);
            }

            return lista;

		}

		public Bovespa.ManutencaoOrdens.Service.DataContract.Response.OrdemResponse ToOrdemResponse(BusinessEntity.Ordem from)
        {
            Bovespa.ManutencaoOrdens.Service.DataContract.Response.OrdemResponse retorno = new Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Response.OrdemResponse();

            if (from == null)
                return null;

            retorno.ApelidoCliente = from.ApelidoCliente;
            retorno.Ativo = from.Ativo;
            retorno.Carteira = from.Carteira;
            retorno.CodigoBolsa = from.CodigoBolsa;
            retorno.NomeBolsa = from.NomeBolsa;
            retorno.CodigoBrokerCliente = from.CodigoBrokerCliente;
            retorno.CodigoCasamento = from.CodigoCasamento;
            retorno.CodigoCliente = from.CodigoCliente;
            retorno.CodigoISIN = from.CodigoISIN;
            retorno.CodigoOperador = from.CodigoOperador;
            retorno.CodigoUsuario = from.CodigoUsuario;
            retorno.ComplementoNomeCliente = from.ComplementoNomeCliente;
            retorno.DataHoraOrdem = from.DataHoraOrdem;
            retorno.DataOrdem = from.DataOrdem;
            retorno.DataValidade = from.DataValidade;
            retorno.DescricaoAtivo = from.DescricaoAtivo;
            retorno.DigitoCliente = from.DigitoCliente;
            retorno.Discricionaria = from.Discricionaria;
            retorno.Distribuida = from.Distribuida;
            retorno.IndicadorCasaOrdem = from.IndicadorCasaOrdem;
            retorno.IndicadorClientePessoaVinculada = from.IndicadorClientePessoaVinculada;
            retorno.IndicadorDesprezaSaldo = from.IndicadorDesprezaSaldo;
            retorno.IndicadorGravaLog = from.IndicadorGravaLog;
            retorno.IndicadorLiquidacaoExterna = from.IndicadorLiquidacaoExterna;
            retorno.IndicadorOrdemAdmConcorrente = from.IndicadorOrdemAdmConcorrente;
            retorno.IndicadorOrigemMegaBolsa = from.IndicadorOrigemMegaBolsa;
            retorno.IndicadorSistemaExterno = from.IndicadorSistemaExterno;
            retorno.LoginOperador = from.LoginOperador;

            switch (from.Mercado)
            {
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.Vista:
                    retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.Vista;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.OpcaoCompra:
                    retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.OpcaoCompra;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.OpcaoVenda:
                    retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.OpcaoVenda;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.ExercicioOpcaoCompra:
                    retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.ExercicioOpcaoCompra;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.ExercicioOpcaoVenda:
                    retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.ExercicioOpcaoVenda;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.Fracionario:
                    retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.Fracionario;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.Estruturado:
                    retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.Estruturado;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.Leilao:
                    retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.Leilao;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.Termo:
                    retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.Termo;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.LeilaoNaoCotados:
                    retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.LeilaoNaoCotados;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.Futuro:
                    retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.Futuro;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.VencimentoFuturo:
                    retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.VencimentoFuturo;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.BOX:
                    retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.BOX;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.CotasETF:
                    retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.CotasETF;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoMercado.IntegralizacaoResgateCotas:
                    retorno.Mercado = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoMercado.IntegralizacaoResgateCotas;
                    break;
            }

            retorno.NomeCliente = from.NomeCliente;
            retorno.NomeEmissor = from.NomeEmissor;
            retorno.NumeroOrdem = from.NumeroOrdem;
            retorno.NumeroOrdemOriginal = from.NumeroOrdemOriginal;
            retorno.NumeroOrdemSubSequencia = from.NumeroOrdemSubSequencia;
            retorno.Observacao = from.Observacao;
            retorno.PercentualCorretagem = from.PercentualCorretagem;
            retorno.PercentualFinanciamento = from.PercentualFinanciamento;
            retorno.PossuiPreBoleto = from.PossuiPreBoleto;
            retorno.PrazoVencimentoTermo = from.PrazoVencimentoTermo;
            retorno.Preco = from.Preco;
            retorno.PrecoMedio = from.PrecoMedio;
            retorno.Quantidade = from.Quantidade;
            retorno.QuantidadeAnexoIV = from.QuantidadeAnexoIV;
            retorno.QuantidadeAnexoV = from.QuantidadeAnexoV;
            retorno.QuantidadeCanceladaOferta = from.QuantidadeCanceladaOferta;
            retorno.QuantidadeExecutada = from.QuantidadeExecutada;

            switch (from.Situacao)
            {
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.SituacaoOrdem.Cancelada:
                    retorno.Situacao = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.SituacaoOrdem.Cancelada;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.SituacaoOrdem.HomeBroker:
                    retorno.Situacao = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.SituacaoOrdem.HomeBroker;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.SituacaoOrdem.AbertaViaSinalNegocio:
                    retorno.Situacao = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.SituacaoOrdem.AbertaViaSinalNegocio;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.SituacaoOrdem.Exercicio:
                    retorno.Situacao = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.SituacaoOrdem.Exercicio;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.SituacaoOrdem.Demais:
                    retorno.Situacao = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.SituacaoOrdem.Demais;
                    break;
            }

            if (from.NaturezaOperacao.HasValue)
            {
                switch (from.NaturezaOperacao.Value)
                {
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.NaturezaOperacao.Compra:
                        retorno.NaturezaOperacao = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.NaturezaOperacao.Compra;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.NaturezaOperacao.Venda:
                        retorno.NaturezaOperacao = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.NaturezaOperacao.Venda;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.NaturezaOperacao.CompraVenda:
                        retorno.NaturezaOperacao = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.NaturezaOperacao.CompraVenda;
                        break;
                }
            }

            switch (from.TipoDistribuicao)
            {
                case BusinessEntity.Enum.TipoDistribuicao.NaoDistribuida:
                    retorno.TipoDistribuicao = Service.DataContract.Enum.TipoDistribuicao.NaoDistribuida;
                    break;
                case BusinessEntity.Enum.TipoDistribuicao.Distribuida:
                    retorno.TipoDistribuicao = Service.DataContract.Enum.TipoDistribuicao.Distribuida;
                    break;
                case BusinessEntity.Enum.TipoDistribuicao.PrecoDigitado:
                    retorno.TipoDistribuicao = Service.DataContract.Enum.TipoDistribuicao.PrecoDigitado;
                    break;
                case BusinessEntity.Enum.TipoDistribuicao.PrecoMedio:
                    retorno.TipoDistribuicao = Service.DataContract.Enum.TipoDistribuicao.PrecoMedio;
                    break;
                case BusinessEntity.Enum.TipoDistribuicao.DistribuicaoLote:
                    retorno.TipoDistribuicao = Service.DataContract.Enum.TipoDistribuicao.DistribuicaoLote;
                    break;
                case BusinessEntity.Enum.TipoDistribuicao.AdmConcorrenteDistribuida:
                    retorno.TipoDistribuicao = Service.DataContract.Enum.TipoDistribuicao.AdmConcorrenteDistribuida;
                    break;
                case BusinessEntity.Enum.TipoDistribuicao.AdmConcorrenteCongelada:
                    retorno.TipoDistribuicao = Service.DataContract.Enum.TipoDistribuicao.AdmConcorrenteCongelada;
                    break;
                case BusinessEntity.Enum.TipoDistribuicao.DistribuicaoIMercado:
                    retorno.TipoDistribuicao = Service.DataContract.Enum.TipoDistribuicao.DistribuicaoIMercado;
                    break;
            }

            switch (from.TipoDistribuicaoPermitida)
            {
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoDistribuicaoPermitida.Normal:
                    retorno.TipoDistribuicaoPermitida = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoDistribuicaoPermitida.Normal;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoDistribuicaoPermitida.DiferenciadoPOP:
                    retorno.TipoDistribuicaoPermitida = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoDistribuicaoPermitida.DiferenciadoPOP;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoDistribuicaoPermitida.DiferenciadoAdministradoConcorrente:
                    retorno.TipoDistribuicaoPermitida = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoDistribuicaoPermitida.DiferenciadoAdministradoConcorrente;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoDistribuicaoPermitida.DiferenciadoAdministradoConcorrentePOP:
                    retorno.TipoDistribuicaoPermitida = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoDistribuicaoPermitida.DiferenciadoAdministradoConcorrentePOP;
                    break;
            }

            if (from.TipoLiquidacao.HasValue)
            {
                switch (from.TipoLiquidacao.Value)
                {
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoLiquidacao.Custodiante:
                        retorno.TipoLiquidacao = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoLiquidacao.Custodiante;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoLiquidacao.Normal:
                        retorno.TipoLiquidacao = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoLiquidacao.Normal;
                        break;
                }
            }

            if (from.TipoOrdem.HasValue)
            {
                switch (from.TipoOrdem.Value)
                {
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoOrdem.Mercado:
                        retorno.TipoOrdem = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoOrdem.Mercado;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoOrdem.Casada:
                        retorno.TipoOrdem = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoOrdem.Casada;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoOrdem.Administrada:
                        retorno.TipoOrdem = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoOrdem.Administrada;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoOrdem.Limitada:
                        retorno.TipoOrdem = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoOrdem.Limitada;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoOrdem.Financiamento:
                        retorno.TipoOrdem = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoOrdem.Financiamento;
                        break;
                    case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.TipoOrdem.OnStop:
                        retorno.TipoOrdem = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.TipoOrdem.OnStop;
                        break;
                }
            }

            switch(from.SituacaoCasamento)
            {
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.SituacaoCasamento.Casada:
                    retorno.SituacaoCasamento = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.SituacaoCasamento.Casada;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.SituacaoCasamento.ParcialmenteCasada:
                    retorno.SituacaoCasamento = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.SituacaoCasamento.ParcialmenteCasada;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.SituacaoCasamento.NaoCasada:
                    retorno.SituacaoCasamento = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.SituacaoCasamento.NaoCasada;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.SituacaoCasamento.AnteriormenteCasada:
                    retorno.SituacaoCasamento = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.SituacaoCasamento.AnteriormenteCasada;
                    break;                
                default:
                    break;
            }

            retorno.ValorDolar = from.ValorDolar;
            retorno.ValorFinanciamento = from.ValorFinanciamento;
            retorno.Volume = from.Volume;
            retorno.Saldo = from.Saldo;

            retorno.ValorOrdem = ToValorOrdemResponse(from.ValorOrdem);

            return retorno;
		}

		public List<Bovespa.ManutencaoOrdens.Service.DataContract.Response.OrdemResponse> ToOrdemResponse(List<BusinessEntity.Ordem> from)
        {
            List<Bovespa.ManutencaoOrdens.Service.DataContract.Response.OrdemResponse> lista = new List<Bovespa.ManutencaoOrdens.Service.DataContract.Response.OrdemResponse>();
            Bovespa.ManutencaoOrdens.Service.DataContract.Response.OrdemResponse item = null;

            if (from == null)
                return null;

            foreach (BusinessEntity.Ordem inLista in from)
            {
                item = this.ToOrdemResponse(inLista);
                lista.Add(item);
            }

            return lista;
		}

		public Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Response.SaldoResponse ToSaldoResponse(BusinessEntity.Saldo from)
        {
            Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Response.SaldoResponse retorno = new Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Response.SaldoResponse();

            if (from == null)
                return null;

            retorno.Valor = from.Valor;

            return retorno;
		}

        public Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Response.ChaveOrdemResponse ToChaveOrdemResponse(BusinessEntity.ChaveOrdem from)
        {
            Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Response.ChaveOrdemResponse retorno = new Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Response.ChaveOrdemResponse();

            if (from == null)
                return null;

            retorno.DataOrdem = from.DataOrdem;
            retorno.NumeroOrdem = from.NumeroOrdem;
            retorno.NumeroOrdemSubSequencia = from.NumeroOrdemSubSequencia;

            return retorno;
        }

        public Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Response.ValorOrdemResponse ToValorOrdemResponse(BusinessEntity.ValorOrdem from)
        {
            Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Response.ValorOrdemResponse to = null;

            if (from != null)
            {
                to = new Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Response.ValorOrdemResponse();
                to.ValorExecutado = from.ValorExecutado;
                to.ValorNaoExecutado = from.ValorNaoExecutado;
                to.ValorTotal = from.ValorTotal;
            }

            return to;
        }
    }
}
